#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/12/31 21:47
# @Author : George
"""
# @app.route('/')： 这是一个装饰器，用于告诉 Flask 哪个 URL 应该触发下面的函数。
在这个例子中，它指定了根 URL（即网站的主页）。

# return 'Hello, World!'： 这行代码是 hello_world 函数的返回值。
当用户访问根 URL 时，这个字符串将被发送回用户的浏览器。

"""
from flask import Flask, request, jsonify,render_template_string
import time
# HTML模板作为字符串（在实际应用中，你通常会将其保存在一个.html文件中）
html_content = """
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>多个div示例</title>
    <style>
        body {
            font-family: Arial, sans-serif;
        }
        .container {
            margin: 20px;
            padding: 20px;
            border: 1px solid #ccc;
            margin-bottom: 10px;
        }
        h2 {
            color: #333;
        }
        span {
            display: block;
            margin-top: 10px;
            color: #666;
        }
        a {
            color: blue;
            text-decoration: none;
        }
        a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>

    <div class="container">
        <h2>标题1</h2>
        <span>这是一些文字内容，并且有一个<a href="https://example.com/link1">链接1</a>。</span>
    </div>

    <div class="container">
        <h2>标题2</h2>
        <span>这是另一个段落，包含一个<a href="https://example.com/link2">链接2</a>。</span>
    </div>

    <div class="container">
        <h2>标题3</h2>
        <span>更多文字内容，以及一个<a href="https://example.com/link3">链接3</a>。</span>
    </div>

    <!-- 你可以继续添加更多的div -->

</body>
</html>
"""

def get_client_ip(request):
    # 如果使用了反向代理，优先从 X-Forwarded-For 头部获取 IP 地址
    x_forwarded_for = request.headers.get('X-Forwarded-For', '').split(',')
    if x_forwarded_for:
        client_ip = x_forwarded_for[0]  # 通常第一个 IP 地址是客户端的真实 IP 地址
    else:
        client_ip = request.remote_addr
    return client_ip


app = Flask(__name__)


@app.route('/')
def index():
    return 'Hello, World!'


@app.route('/bobo')
def index_bobo():
    # 获取client的user_agent和referer
    user_agent = request.headers.get('User-Agent')
    user_referer = request.headers.get('Referer')
    print(user_agent, user_referer)
    # client ip地址没有获取到
    client_ip = get_client_ip(request)
    print({'client_ip': client_ip})
    time.sleep(3)
    # 使用render_template_string渲染HTML模板
    # 注意：在实际应用中，你通常会使用render_template('template_name.html', **context)
    # 来渲染保存在文件中的模板，并传递上下文变量
    return render_template_string(html_content)


@app.route('/jar')
def index_jar():
    time.sleep(3)
    return 'jar'


@app.route('/test')
def index_test():
    time.sleep(3)
    return 'test'


if __name__ == '__main__':
    app.run(threaded=True)
